#ifndef QUEUE_H
#define QUEUE_H
#include <my_head.h>
#define ELEMENTYPE client_status*

/*
//当前用户信息
typedef struct {
    char user_name[1000];    //用户名
    char user_id[1000];      //用户id
    char cur_path[2000];      //用户当前路径
    char root_path[2000];     //用户根路径
    
    int net_fd;         //客户端的通信描述符                        
} UserInf;
*/
typedef struct{                                                      
     int mode;           // 1. cd   2. ls   3, puts   4, gets    5,rm 
     int size;           //需要的信息个数
     int msg_len;        //传出去的信息长度
     char msg[2000];//包含ls关键字之后信息和所需要信息的拼接  
     char file_name[200];
     char hash_values[2000];                        ////你们要什么就自行在自己的函数后面拼接
     char token[2000]; 
}sendMsg;

typedef struct client_status{
    char user_name[20];  //用户名
    MYSQL *sql;          //当前用户的数据库连接
    int islogin;         //登录状态
    char root_path[20000];
    char path[2000];     //当前路径
    char path_last[2000];//命令参数，一般为目的路径
    int net_fd;          //需要通信的客户端连接
    char user_id[6];     //当前服务的客户端id   
    sendMsg *msg;         //客户传送的命令信息
}client_status;

typedef struct Node_s{
    ELEMENTYPE data;
    struct Node_s *next;
} Node_t;

typedef struct Queue_s{
    Node_t *head, *tail;
    int size;
} Queue_t;

//
Queue_t* createQueue();
//
bool destroyQueue(Queue_t *q);
//
bool isEmpty(Queue_t *q);
//
bool push(Queue_t *q, ELEMENTYPE data);
//
ELEMENTYPE pop(Queue_t *q);

#endif
